Elasticsearch-এর Security Features এবং User Authentication
Elasticsearch-এ ডেটা সুরক্ষা এবং অ্যাক্সেস নিয়ন্ত্রণ নিশ্চিত করার জন্য বিভিন্ন Security Features এবং User Authentication পদ্ধতি রয়েছে। এগুলো Elasticsearch-কে সুরক্ষিত করে এবং অনুমোদিত ইউজারদের ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় অথেন্টিকেশন এবং অথরাইজেশন নিয়ন্ত্রণে সহায়তা করে। Elasticsearch ৭.১০ এবং এর পরবর্তী ভার্সনে X-Pack সিকিউরিটি বিল্ট-ইন থাকে, যা ইউজার অথেন্টিকেশন, রোল-বেসড অ্যাক্সেস কন্ট্রোল (RBAC), এবং ডেটা এনক্রিপশন সাপোর্ট করে।
1. Elasticsearch-এর Security Features
a) TLS/SSL Encryption
- Elasticsearch ক্লাস্টার এবং ক্লায়েন্টের (যেমন Kibana) মধ্যে ডেটা এনক্রিপশন করতে TLS/SSL ব্যবহার করা হয়।
- Transport Layer Encryption: নোডগুলোর মধ্যে কমিউনিকেশন সিকিউর করতে Transport Layer Security সক্রিয় করুন।
- HTTPS Setup: HTTP API কল এনক্রিপ্ট করতে HTTPS সক্রিয় করুন। সার্টিফিকেট এবং কী কনফিগার করতে
elasticsearch.yml
ফাইল ব্যবহার করুন:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/keystore.p12
b) Role-based Access Control (RBAC)
- RBAC ব্যবহার করে আপনি ইউজারদের নির্দিষ্ট ইনডেক্স, API, এবং ডকুমেন্টের উপর অ্যাক্সেস কন্ট্রোল সেট করতে পারেন।
- RBAC সিস্টেমে নির্দিষ্ট রোল তৈরি করে সেই রোলের অধীনে ইউজারদের জন্য ইনডেক্স, ডকুমেন্ট এবং API এর প্রিভিলেজ ডিফাইন করা যায়। উদাহরণ:
{
"indices": [
{
"names": ["customer-index"],
"privileges": ["read", "write"]
}
]
}
c) Audit Logging
- Audit Logging সক্রিয় করলে Elasticsearch সমস্ত ইউজার এবং API এক্টিভিটি লগ করে। এতে কোনো সন্দেহজনক এক্টিভিটি সহজে মনিটর করা যায়।
- Audit Logging কনফিগার করতে
elasticsearch.yml
ফাইলে সেটিংস যুক্ত করুন:
xpack.security.audit.enabled: true
d) Document এবং Field Level Security
- Elasticsearch-এর সাহায্যে আপনি ডকুমেন্ট এবং ফিল্ড লেভেলে অ্যাক্সেস কন্ট্রোল কনফিগার করতে পারেন। এটি নিশ্চিত করে যে নির্দিষ্ট ইউজার বা রোল শুধুমাত্র নির্দিষ্ট ডকুমেন্ট বা ফিল্ড দেখতে বা মডিফাই করতে পারে।
- উদাহরণ: কোনো ইউজার শুধু নির্দিষ্ট ডিপার্টমেন্টের ডেটা অ্যাক্সেস করতে পারবে এমন কন্ডিশন সেট করা।
e) IP Filtering এবং Firewall Integration
- Elasticsearch-এ IP Filtering সেট করে নির্দিষ্ট IP অ্যাড্রেস বা IP রেঞ্জ থেকে অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
- ফায়ারওয়াল এবং অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার করে HTTP (9200) এবং Transport (9300) পোর্ট শুধুমাত্র নির্দিষ্ট IP-এর জন্য খুলে রাখুন।
2. User Authentication এবং Authorization
Elasticsearch-এ ইউজার অথেন্টিকেশন এবং অথরাইজেশন সিস্টেম সেটআপ করার জন্য বিভিন্ন পদ্ধতি রয়েছে। এগুলো নিশ্চিত করে যে শুধুমাত্র অথেন্টিকেটেড এবং অথরাইজড ইউজাররাই ডেটা এবং সিস্টেম অ্যাক্সেস করতে পারে।
a) Built-in User Authentication
- Elasticsearch-এর বিল্ট-ইন ইউজার অথেন্টিকেশন ফিচার ব্যবহার করে ইউজার তৈরি এবং রোল এসাইন করা যায়।
- ডিফল্টভাবে
elastic
ইউজার অ্যাডমিনিস্ট্রেটর রোল নিয়ে আসে, যার পাসওয়ার্ড কনফিগার করার জন্য কমান্ড ব্যবহার করা হয়:
bin/elasticsearch-setup-passwords interactive
- নতুন ইউজার এবং রোল তৈরি করতে Kibana UI অথবা Elasticsearch API ব্যবহার করতে পারেন।
b) Role Creation এবং Assignment
- Elasticsearch-এর RBAC সিস্টেম ব্যবহার করে বিভিন্ন রোল তৈরি করুন এবং ইউজারদের এসাইন করুন। উদাহরণ:
{
"cluster": ["manage", "monitor"],
"indices": [
{
"names": ["sales-*"],
"privileges": ["read"]
}
]
}
- একটি নির্দিষ্ট ইউজারকে নির্দিষ্ট রোল অ্যাসাইন করুন:
POST /_security/user/sales_user
{
"password" : "password123",
"roles" : [ "sales_role" ]
}
c) External Authentication Providers (LDAP, SAML, OAuth)
- Elasticsearch এক্সটার্নাল অথেন্টিকেশন প্রোভাইডার যেমন LDAP, SAML, এবং OAuth 2.0 সাপোর্ট করে। এই প্রোভাইডারগুলো ইন্টিগ্রেট করে কর্পোরেট ডিরেক্টরি বা আইডেন্টিটি ম্যানেজমেন্ট সিস্টেম ব্যবহার করে ইউজার অথেন্টিকেশন করা যায়।
- LDAP Integration: LDAP সার্ভারের কনফিগারেশন
elasticsearch.yml
ফাইলে কনফিগার করুন:
xpack.security.authc.realms.ldap.ldap1:
order: 0
url: "ldap://ldap.example.com:389"
bind_dn: "cn=admin,dc=example,dc=com"
bind_password: "password"
user_search:
base_dn: "dc=example,dc=com"
- SAML Integration: SAML প্রোটোকল ব্যবহার করে সিঙ্গল সাইন-অন (SSO) সক্ষম করা যায়।
d) API Key এবং Token-based Authentication
- Elasticsearch API অ্যাক্সেস করার জন্য API Key বা Token-based অথেন্টিকেশন ব্যবহার করা যেতে পারে, যা নির্দিষ্ট ইউজার বা রোলের জন্য সিকিউরিটি নিশ্চিত করে।
- API Key তৈরি করার জন্য:
POST /_security/api_key
{
"name": "my-api-key",
"role_descriptors": {
"my_role": {
"cluster": ["all"],
"index": [
{
"names": ["*"],
"privileges": ["read", "write"]
}
]
}
}
}
- এই API কী নির্দিষ্ট সময়ের জন্য অ্যাক্সেস দিতে পারে এবং স্কোপ-ভিত্তিক প্রিভিলেজ কনফিগার করা যায়।
3. Elasticsearch Security Best Practices
- Enable HTTPS (TLS) Everywhere: ক্লাস্টারের সব নোড এবং ক্লায়েন্টের মধ্যে HTTPS এনক্রিপশন সক্রিয় রাখুন।
- Use Strong Passwords and Rotate Them Regularly: ইউজারদের জন্য স্ট্রং পাসওয়ার্ড পলিসি প্রয়োগ করুন এবং নিয়মিত পাসওয়ার্ড পরিবর্তন করুন।
- Apply Least Privilege Principle: প্রতিটি ইউজার বা রোলকে শুধুমাত্র তাদের প্রয়োজনীয় মিনিমাম প্রিভিলেজ দিন।
- Monitor Audit Logs: Audit Logging সক্রিয় করে নিয়মিত লগ মনিটর করুন, যাতে সন্দেহজনক এক্টিভিটি দ্রুত সনাক্ত করা যায়।
- Limit Public Access: প্রোডাকশন পরিবেশে Elasticsearch কখনোই ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য না রাখুন। শুধুমাত্র ট্রাস্টেড নোড এবং ক্লায়েন্ট থেকে অ্যাক্সেস দিন।
উপসংহার
Elasticsearch-এ সিকিউরিটি ফিচার এবং ইউজার অথেন্টিকেশন পদ্ধতি সঠিকভাবে ব্যবহার করে আপনি সিস্টেম এবং ডেটাকে সুরক্ষিত রাখতে পারেন। সঠিক কনফিগারেশন, RBAC, TLS/SSL এনক্রিপশন, এবং এক্সটার্নাল অথেন্টিকেশন প্রোভাইডার ইন্টিগ্রেশন ব্যবহার করে একটি শক্তিশালী এবং সিকিউর পরিবেশ তৈরি করা সম্ভব।